他アカウントで検知した CloudWatch アラームをトリガーに AWS Lambda を実行する方法を教えてください
困っていること
他アカウントで EC2 インスタンスの CPU 使用率を監視する Cloudwatch アラームを設定しています。
その CloudWatch アラームが発生したら主アカウントの AWS Lambda が実行されるようにしたいです。
どのようにすれば実現可能でしょうか、教えてください。
どう対応すればいいの?
- 「他アカウント」を アカウント A
- 「主アカウント」を アカウント B
上記仮定の基、以下の手順を参考に想定となる挙動となるかお試しください。
1. アカウント B にて Lambda を通知先に設定した SNS トピックを作成
2. ドキュメント と AWS re:Post を参考にアカウント B の SNS トピックのアクセスポリシーに以下を追記
※ "REGION" "ACCOUNT_ID" "TOPIC_NAME" "ALARM_NAME" は環境によって書き換えてください。
{ "Sid": "Allow_Publish_Alarms", "Effect": "Allow", "Principal": { "Service": [ "cloudwatch.amazonaws.com" ] }, "Action": "sns:Publish", "Resource": "arn:aws:sns:<REGION>:<ACCOUNT_ID>:<TOPIC_NAME>", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:cloudwatch:<REGION>:<ACCOUNT_ID>:alarm:<ALARM_NAME>" } } }
3. アカウント A にてアカウント B の SNS トピックをアクションに設定した CloudWatch アラームを作成